﻿
using System;
using System.Collections;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace Demo
{
    class Program
    {
//        第一题：
//一个考试管理系统，需要录入考生成绩，只能录入数字，否则会报类型转换异常。
//请编写相关代码，
//1、捕获FormatException异常，并打印输出“异常已处理；
//2、捕获OverflowException异常，数值超出float范围的异常，并打印输出“异常已处理；
//3、捕获一般异常Exception异常。
//4、最终处理finally
//录入成绩结束后，请输出，总学生数，总分数，平均分。

        static void Main(string[] args)
        {
            Test();
        }
        static void Test()
        {

            try
            {
                float sum = 0;
                int count = 0;
                while (true)
                {
                  
                    Console.WriteLine("请输入学生的成绩：");
                    float score = float.Parse(Console.ReadLine());
                    

                    Console.WriteLine("请问还要继续添加吗(yes|no)");
                    string a = Console.ReadLine();
                    
                    if (a.Equals("yes"))
                    {
                        count++;
                        for (int i = 0; i < count; i++)
                        {
                            sum = score + sum;
                            break;
                        }
                    }
                    else
                    {
                        count++;
                        for (int i = 0; i < count; i++)
                        {
                            sum = score + sum;
                            break;
                        }
                        break;
                    }
                }
                Console.WriteLine("学生的总数是{0}，总分是{1}，平均分是{2}", count, sum, sum / count);
                
            }
            catch (FormatException)
            {

                Console.WriteLine("格式化异常,已处理");
            }
            catch (OverflowException)
            {
                Console.WriteLine("超出范围异常，已处理");
            }
            catch (Exception)
            {
                Console.WriteLine("异常已处理");
            }
            finally
            {
                Console.WriteLine("结束");
            }
        }
        //编写一个程序，用以接收用户输入的两个浮点型的数值，一个值表示用户想要存放在银行账户中的余额，另一个值表示用户想要从银行账户中提取的金额。
        //实现存取款功能，
        //用户功能选择：1、存款，2、取款
        //取款时：
        //当用户想要提取的金额大于余额时，请手动抛出一个ArgumentOutOfRangeException 参数超出范围的异常，异常信息可以写“取款金额大于余额，请重新输入”
        //，如此以确保取款金额始终不大于当前余额。
        //操作结束，打印输出余额是多少。
        //最后再添加catch一般异常 Exception，使得数据类型转换的异常也能被捕获到。
        static void Test1()
        {
            try
            {
                float money = 0;
                float getmoney = 0;
                Exception e = new ArgumentOutOfRangeException();
                while (true)
                {
                    Console.WriteLine("用户功能选择：1、存款，2、取款");
                    int key = int.Parse(Console.ReadLine());
                    switch (key)
                    {
                        case 1:
                            Console.WriteLine("请输入你要存入的金额");
                            money += float.Parse(Console.ReadLine());
                            break;
                        case 2:

                            Console.WriteLine("请输入你要取款的金额");
                            getmoney = float.Parse(Console.ReadLine());
                            if (getmoney > money)
                            {
                                Console.WriteLine(e.Message);
                            }
                            else
                            {
                                getmoney = money - getmoney;
                                Console.WriteLine("剩余金额为:" + getmoney);
                            }
                            break;
                        default:
                            Console.WriteLine("请输入正确的数字");
                            Test1();
                            break;
                    }
                }
            }

            catch (Exception)
            {
                Console.WriteLine("异常已解决");
            }
        }
    }   
           
        }
    

